package com.vipboot.framework.biz.api.auth;

import com.vipboot.framework.biz.api.auth.domain.model.ApiLoginUser;
import com.vipboot.framework.biz.api.auth.domain.model.ApiXcxLoginUser;

/**
 * 用户服务
 */
public interface ApiUserService {

    /**
     * 通过用户名查询用户信息
     *
     * @param username 用户名
     * @return 结果
     */
    ApiLoginUser getUserInfo(String username);

    /**
     * 通过用户id查询用户信息
     *
     * @param userId   用户id
     * @param tenantId 租户id
     * @return 结果
     */
    ApiLoginUser getUserInfo(Long userId, String tenantId);

    /**
     * 通过手机号查询用户信息
     *
     * @param phonenumber 手机号
     * @param tenantId    租户id
     * @return 结果
     */
    ApiLoginUser getUserInfoByPhonenumber(String phonenumber, String tenantId);

    /**
     * 通过邮箱查询用户信息
     *
     * @param email    邮箱
     * @param tenantId 租户id
     * @return 结果
     */
    ApiLoginUser getUserInfoByEmail(String email, String tenantId);

    /**
     * 通过openid查询用户信息
     *
     * @param openid openid
     * @return 结果
     */
    ApiXcxLoginUser getUserInfoByOpenid(String openid);

    /**
     * 注册用户信息
     *
     * @param remoteUserBo 用户信息
     * @return 结果
     */
//    Boolean registerUserInfo(ApiUserBo remoteUserBo);

    /**
     * 通过userId查询用户账户
     *
     * @param userId 用户id
     * @return 结果
     */
    String selectUserNameById(Long userId);

    /**
     * 通过用户ID查询用户昵称
     *
     * @param userId 用户id
     * @return 结果
     */
    String selectNicknameById(Long userId);

//    /**
//     * 更新用户信息
//     *
//     * @param userId 用户ID
//     * @param ip     IP地址
//     */
//    void updateLoginInfo(Long userId, String ip);

}
